﻿//-----------------------------------------------------------------------------
//
//
//
//-----------------------------------------------------------------------------
// Exo² - Tools - Studio/BasicModule
// Copyright (C) 2007-2008 Samuel Lacroix and Raphaël Legouge
//
// Distributed under GNU General Public License
// See the License folder for details
// http://www.codeplex.com/exo2 (eng)
//-----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BasicModule
{
    public abstract class IBasicModule
    {
        public IBasicModule(System.Windows.Forms.ToolStripMenuItem menuStrip, string ModuleName)
        {
            // On copie le menu des modules
            this.menuToolStripMenuItem = menuStrip;

            // On ajoute notre module dans le menuStrip
            this.mainToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.mainToolStripMenuItem.Name = "mainToolStripMenuItem";
            this.mainToolStripMenuItem.Text = ModuleName;
            this.mainToolStripMenuItem.Click += new EventHandler(this.mainToolStripMenuItem_Click);
            this.menuToolStripMenuItem.DropDownItems.Add(this.mainToolStripMenuItem);

            // On charge le module
            OnLoaded();
        }

        ~IBasicModule()
        {
            this.menuToolStripMenuItem.DropDownItems.Remove(this.mainToolStripMenuItem);
            OnUnloaded();
        }

        public abstract void OnLoaded();        // Lancée au chargement du module
        public abstract void OnUnloaded();      // Lancée au déchargement du module
        public abstract void OnStarted();       // Lancée au lancement du module

        protected System.Windows.Forms.ToolStripMenuItem menuToolStripMenuItem;         // Pointeur sur le menu des modules

        protected System.Windows.Forms.ToolStripMenuItem mainToolStripMenuItem;         // Menu de notre module

        protected MainForm mainForm;            // Fenêtre principale du module

        private void mainToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OnStarted();
            if (this.mainForm != null)          // Si l'utilisateur à bien dérivé la fiche préfaite et stocké dans mainForm
            {
                this.mainForm.Show();
                this.mainForm.Activate();
            }
        }
    }
}
